Soru & Cevap

PropertyList Dosyasına Veri Yazdırma Sorunu

26.12.2013 - 08:09

Merhaba,

Uygulamada kullanıcı tanımlı bir menü var ve bu menüye istenildiği zaman kullanıcı tarafından müdehale edilebiliyor. (Göster/Gizle formatında).

Bu kullanım için plist yapısını kullandım. Benim kendi oluşturduğum bir plist dosyasından verileri tabloya yazdırıyorum. Checkmark kullanarak Göster/Gizle kullanımı da yaptırıyorum ama verileri kalıcı olarak yazdırmada sorun yaşıyorum. Seçim yapılan ekrandan çıkıldığı zaman yapılan seçimler kaydedilmiyor. Bi yerde kodları yanlış kullanıyorum ama nerede olduğunu çıkartamadım. Bu sorunu çözmeden uyku yok dedim ve yaklaşık 30 saatlik uykusuzluğun ardından size sormak daha iyi olacak diye düşündüm.

Plist'den ekran görüntüsü de ekliyorum. Yapman gereken olay Boolean değerler üzerinde veri değişikliği yapabilmek.

Değişiklik yaptığım alan; (Bu şekilde kalıcı olarak yazmıyor. Araştırmalarım sonucu writeFile komutunu kullanmam gerektiğini buldum ama bi türlü başarılı olamadım. Sorun veriyi tam olarak nasıl yazacağımı bilmemekten kaynaklı.)

 

-(NSMutableArray *)menuList

{

    if (!_menuList) {

        _menuList = [[NSMutableArray alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"CategoryList" ofType:@"plist"]];

    }

    return _menuList;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

    [tableView deselectRowAtIndexPath:indexPath animated:NO];

        UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

    if([[[self.menuList objectAtIndex:indexPath.row] valueForKey:@"MenuShow"] boolValue] == NO)

    {

        cell.accessoryType = UITableViewCellAccessoryCheckmark;

        [[self.menuList objectAtIndex:indexPath.row] setValue:[NSNumber numberWithBool:YES] forKey:@"MenuShow"];

        NSLog(@"%@", @"secildi");

    }

    else

    {

        cell.accessoryType = UITableViewCellAccessoryNone;

        [[self.menuList objectAtIndex:indexPath.row] setValue:[NSNumber numberWithBool:NO] forKey:@"MenuShow"];

         NSLog(@"%@", @"kaldırıldı");

    }

    [[self.menuList objectAtIndex:indexPath.row] synchronize];

}

Veriyi kalıcı olarak yazdıramadığım alanı yukarıda kalın olarak belirttim.  Daha önce bu şekilde NSUserDefault değişkenine kayıt yapıyordum. Sanırım şuan bi NSMutableDictionary yapısı tanımlamam gerekiyor kendime; ancak sorunun üstesinden gelemedim.

Şimdiden cevaplarınız için teşekkür ederim.

Herkese keyifli kodlamalar :)

13 Görüntülenme

3 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-7864-1383490128.jpg
grknblt
27.12.2013 - 07:29

Murat Bey,

Ben veriyi okurken hatalı okuyormuşum. Bu nedenle yazdırırken de başarılı olamamışım. Siz söyledikten sonra aklıma öncesinden de kaynı olabileceği geldi ve şuan sorunu tamamen çözdüm.

Cevabınız ve yol gösterişiniz için tekrardan teşekkür ederim.

 

Herkese keyifli kodlamalar :)

picture-7864-1383490128.jpg
grknblt
27.12.2013 - 06:43

Yani bunu yapmak için güncelleme mantığıyla değil tekrardan dosyayı yazdırma mantığıyla hareket etmem gerekecek.

Cevabınız için teşekkür ederim. Hemen düzenlemelere başlıyorum.

picture-4271-1380316299.jpg
MuratSisman
27.12.2013 - 05:25

Plist içeriğini ve yeni kayıtları sıfırdan yeni bir Array'e alıp daha sonra bu array'i saveToFile komutu ile dosyaya yazdırabilirsin.